package d01_pilmmorphism;

public class Test02 {
    public static void main(String[] args) {
        //多态的好处，
        // 1、多态下右边对象是解耦合的
        Animal a=new Dog();
        a.cry();
        //2、多态下，父类类型作为方法的形参，可以接收一切子类对象
        go(a);
        go(new Cat());
        //3、多态下不能调用子类的独有行为

        //4、多态下类型转换
        //自动转换： 父类 变量名 = new 子列
        Animal c1=new Cat();
        //强制转换：子类 变量名=（子类）父类变量
        Dog d1=(Dog)a;
        d1.look();
    //建议强转时判断对象类型
        if (a instanceof Dog){
            Dog d2=(Dog)a;
        }else {
            Cat c2=(Cat) a;
        }

    }
    public static void go(Animal c){
        System.out.println("开始");
        c.cry();
        System.out.println("结束");
    }
}
